#ifndef ARRAYSTACKWINDOW_H
#define ARRAYSTACKWINDOW_H

#include <QMainWindow>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QTextEdit>
#include <QLineEdit>
#include <QPushButton>
#include <QLabel>
#include <QGroupBox>
#include <QMessageBox>

class ArrayStackWindow : public QMainWindow
{
    Q_OBJECT

public:
    ArrayStackWindow(QWidget *parent = nullptr);
    ~ArrayStackWindow();

signals:
    void returnToMainMenu();

private slots:
    void onInputData();
    void onPush();
    void onPop();
    void onPeek();
    void onClear();
    void onDemo();
    void onReturnToMainMenu();

private:
    void setupUI();
    void updateDisplay();
    void paintEvent(QPaintEvent* event) override;
    void drawStack(QPainter& painter);

    // 使用原生数组替代 QVector
    int* m_stackArray;      // 动态分配的数组
    int m_capacity;         // 栈容量
    int m_top;              // 栈顶指针

    QTextEdit *m_display;
    QLineEdit *m_inputEdit;
    QLineEdit *m_pushEdit;
};

#endif // ARRAYSTACKWINDOW_H
